package com.lagou.rabbitmq.direct.routing;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.nio.charset.StandardCharsets;
import java.util.Random;

public class Producer {

    private static String[] LOG_LEVEL = {
      "ERROR",
      "FATAL",
      "WARN"
    };

    public static Random random = new Random();

    public static void main(String[] args) throws Exception {

        ConnectionFactory factory = new ConnectionFactory();
        //指定协议 amqp://
        //指定用户名 root
        //指定密码 123456
        //指定host 47.115.74.219
        //指定端口号 5672
        //指定虚拟主机 %2f
        factory.setUri("amqp://root:123456@47.115.74.219:5672/%2f");

        Connection connection = factory.newConnection();

        Channel channel = connection.createChannel();

        //声明交换器,交换器和消息队列的绑定不需要在这里处理
        //第一个参数 交换器名称
        //第二个参数 交换器类型
        //第三个参数 是否持久化
        //第四个参数 是否自动删除
        //第五个参数 交换器属性信息
        channel.exchangeDeclare("ex.routing", BuiltinExchangeType.DIRECT,false,false,null);

        //发送消息
        //交换器的名称
        //该消息的路由键
        //该消息的属性
        //消息内容的字节数组
        for(int i = 0;i <= 100;i++) {
            String level = LOG_LEVEL[random.nextInt(100) % LOG_LEVEL.length];
            channel.basicPublish("ex.routing",
                    level,
                    null,
                    ("hello world topic:"+i).getBytes(StandardCharsets.UTF_8));
        }

        channel.close();
        connection.close();

    }

}
